#!/usr/bin/env python3
# -*- encoding: utf-8 -*-

"""格式化输出的常用方法"""

name = '小明'
height = 180
weight = 143.1415926

#       用%格式化输出

print("我叫%s,身高%dcm,体重%f斤，体脂率%%10" % (name, height, weight))
# %s字符串、%d十进制整数、%x十六进制数、%f浮点数，%f默认保留6位小数，用%%输出%
# 我叫小明,身高180cm,体重143.141593斤，体脂率%10

print("我叫%s,身高%6dcm,体重%8.2f斤" % (name, height, weight))
# 6和8表示输出占位多少格，未占满会在左侧留下空白，2表示四舍五入保留几位小数
# 我叫小明,身高   180cm,体重  143.14斤

print("我叫%s,身高%-6dcm,体重%08.2f斤" % (name, height, weight))
# ‘-’负号表示靠左对齐，0用来填充左侧空白
# 我叫小明,身高180   cm,体重00143.14斤


#       用format()方法

print("我叫{},身高{:06d}cm,体重{:8.2f}斤".format(name, height, weight))
# 按顺序一一对应赋值，且{}内可以用:替代%加格式化参数来控制输出格式
# 我叫小明,身高000180cm,体重  143.14斤

print("我叫{0},身高{2:06d}cm,体重{1:8.2f}斤".format(name, weight, height))
# {}内可以指定序号，填充format()里对应排序的参数值
# 我叫小明,身高000180cm,体重  143.14斤

print("我叫{n},身高{h:06d}cm,体重{w:8.2f}斤".format(n=name, h=height, w=weight))
# {}内可以指定变量名来填充值，变量名和序号可以混合使用但format()里变量名的参数要先给出，不建议这样用
# 我叫小明,身高000180cm,体重  143.14斤

L = ['小明', 180, 143.1415926]
print("我叫{},身高{:06d}cm,体重{:8.2f}斤".format(*L))
# 列表或元组可以通过*加变量名的可变参数传入format()
# 我叫小明,身高000180cm,体重  143.14斤

D = {'name': '小明', 'height': 180, 'weight': 143.1415926}
print("我叫{name},身高{height:06d}cm,体重{weight:8.2f}斤".format(**D))
# 字典可通过**加字典名的关键字参数将value传入format()，{}里是字典的key值
# 我叫小明,身高000180cm,体重  143.14斤


#       用f-string格式化输出

print(f"我叫{name},身高{height:06d}cm,体重{weight:8.2f}斤")
# f加在字符串前，{}做占位符，变量填充值，同样{}内可以用:替代%加格式化参数来控制输出格式
# 我叫小明,身高000180cm,体重  143.14斤
